<?php

namespace App\Http\Controllers\Admin;

use App\Http\Model\Links;
use Illuminate\Http\Request;

use App\Http\Requests;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;

class LinksController extends CommonController
{
    //GET  admin/links  链接列表页面
    public function index()
    {
        $data = Links::orderBy('link_order','desc')->get();
        return view('admin.links.list')->with('data',$data);
    }

    //GET  admin/links/create 添加页
    public function create()
    {
        return view('admin.links.add');
    }

    //POST   admin/links  添加保存操作
    public function store($link_id = 0)
    {
        //调用 insert/update 方法
        $rs = $this->auto_save($link_id);
        if($rs === true) {
            return redirect('admin/links');
        }elseif($rs === false) {
            return back()->with('errors', '数据填充失败，请稍后重试！');
        }else {
            return back()->withErrors($rs);
        }
    }

    //GET   admin/links/{Links}  展示单条记录页
    public function show($cate_id)
    {
        return redirect('admin/links');
    }

    //GET    admin/links/{Links}/edit 编辑展示页
    public function edit($link_id)
    {
        //获取编辑信息
        if( $info = Links::find($link_id) ) {
            return view('admin.links.edit')->with(['info' => $info]);
        }
        return redirect('admin/links');
    }

    //PUT|PATCH   admin/links/{Links}  更新操作
    public function update($link_id)
    {
        //判断是否操作成功
        $rs = $this->auto_save($link_id);
        if($rs === true) {
            return redirect('admin/links');
        }elseif($rs === false) {
            return back()->with('errors', '数据填充失败，请稍后重试！');
        }else {
            return back()->withErrors($rs);
        }
    }

    //DELETE   admin/links/{Links}  删除记录操作
    public function destroy($link_id)
    {
        if( $rs = Links::where('link_id', $link_id)->delete() ) {
            $data = ['msg' => '删除成功', 'errno' => 0];
        }else {
            $data = ['msg' => '删除失败', 'errno' => 2];
        }
        return $data;
    }

    /**
     * 验证插入、保存数据的方法,返回三种结果 true,false,Validator类
     * @param int $link_id 主键id
     * @return bool | object
     */
    public function auto_save($link_id = 0)
    {
        //3月1日 新增一条验证规则
        if(!is_numeric($link_id)) return false;

        if( $input = Input::except('_token','_method') ) {
            $rule = [
                'link_name' => 'required',
                'link_url' => 'required',
            ];
            $message = [
                'link_name.required' => '链接名称不能为空',
                'link_url.required'  => '链接地址不能为空'
            ];

            $validator = Validator::make($input, $rule, $message);

            if($validator->passes()) {
                //链接地址，判断是否带http://
                if(strpos($input['link_url'], 'http://') === false && strpos($input['link_url'], 'https://') === false) {
                    $input['link_url'] = 'http://'.$input['link_url'];
                }
                //验证通过，插入/更新 数据库
                if($link_id) { //更新操作
                    $rs = Links::where('link_id', $link_id)->update($input);
                }else { //插入操作
                    $rs = Links::create($input);
                }
                //判断是否操作成功
                if($rs !== false) {
                    return true;
                }else {
                    return false;
                }
            }else {
                //验证失败时，更新操作需要单独处理
                return $validator;
            }
        }
    }
}
